﻿using DataLayer;
using DataLayer.BD;
using SupportLayer.Constantes;
using SupportLayer.Constantes.Tabelas;
using SupportLayer.Constantes.USUARIO;
using SupportLayer.Objetos.Usuario;
using SupportLayer.ExtensionMethods;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Util;

namespace BusinessLayer
{
	public class Usuario
	{
		Dictionary<string, object> parametros = new Dictionary<string, object>();
		public UsuarioClass Login(string Login, string Senha)
		{
			try
			{
				if (Login.Equals(string.Empty))
					throw new ApplicationException("O campo Login não pode ficar vazio!");

				if (Senha.Equals(string.Empty))
					throw new ApplicationException("O campo Senha não pode ficar vazio!");

				parametros = new Dictionary<string, object>();
				parametros.Add(USUARIO.LOGIN, Criptografia.Encriptar(CRIPTO.CHAVE, CRIPTO.VETOR, Login));
				parametros.Add(USUARIO.SENHA, Criptografia.EncryptMd5(Senha));

				List<UsuarioClass> lstUsuarios = new DataAccess().Select(new UsuarioClass(), TABELAS.USUARIO, new string[] { "*" }, parametros).toUsuarioClass();


				if (lstUsuarios == null)
					return null;
				else
					return lstUsuarios[0];
			}
			catch (Exception)
			{
				throw;
			}
		}
		public UsuarioClass SelectUsuario(int ID)
		{
			try
			{
				parametros = new Dictionary<string, object>();
				parametros.Add(USUARIO.ID, ID);
				return new DataAccess().Select(new UsuarioClass(), TABELAS.USUARIO, new string[] { "*" }, parametros).toUsuarioClass()[0];
			}
			catch (Exception)
			{
				throw;
			}
		}

		public UsuarioClass ValidaUsuario(UsuarioClass user)
		{
			try
			{
				if (user != null)
					return user;

				throw new ApplicationException("O usuário não foi encontrado!");
			}
			catch (Exception)
			{
				throw;
			}
		}
	}
}
